
package com.ys.chatserver.common.dto.cnst;

import com.ys.chatserver.im.dto.MsgBody4Friend;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * RainbowChat中的用户自定义聊天消息、指令等IM通信协议类型常量表（之
 * 所以称为”用户自定义“，是为了区别于MobileIMSDK框架级的协议类型，仅此而已）。
 * <p>
 * 本表中的常量用途，对应用MobileIMSDK的net.openmob.mobileimsdk.server.protocal.Protocal
 *
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @version 4.0
 */
public interface UserProtocalsType {
    /**
     * 上线通知报文头
     */
    int MT01_OF_ONLINE_NOTIVICATION = 1;
    /**
     * 下线通知报文头
     */
    int MT02_OF_OFFLINE_NOTIVICATION = 2;

    /**
     * 普通一对一聊天消息的报文头（聊天消息可能是：文本、图片、语音留言、礼物等）
     *
     */
    int MT03_OF_CHATTING_MESSAGE = 3;

    /**
     * 客户端发出的用户加好友请求报文头（由添加好友请求的发起人发出）
     *
     * @deprecated
     */
    int MT05_OF_ADD_FRIEND_REQUEST_A$TO$SERVER = 5;
    /**
     * 由服务端反馈给加好友发起人的错误信息头(出错的可能是：该好友已经存在于我的好友列表中、插入好友请求到db中时出错等)
     */
    int MT06_OF_ADD_FRIEND_REQUEST_RESPONSE$FOR$ERROR_SERVER$TO$A = 6;
    /**
     * 由服务端转发的加好友请求消息给在线目标用户（离线用户是不需要的哦）
     */
    int MT07_OF_ADD_FRIEND_REQUEST_INFO_SERVER$TO$B = 7;
    /**
     * 被添加者【同意】加好友请求的消息头（由B发给服务端）
     *
     * @deprecated
     */
    int MT08_OF_PROCESS_ADD$FRIEND$REQ_B$TO$SERVER_AGREE = 8;
    /**
     * 被添加者【拒绝】加好友请求的消息头（由B发给服务端）
     *
     * @deprecated
     */
    int MT09_OF_PROCESS_ADD$FRIEND$REQ_B$TO$SERVER_REJECT = 9;
    /**
     * 将【拒绝】的加好友结果传回给原请求用户的消息头（由服务端发回给A），此消息发送的
     * 前提条件是A必须此时必须在线，否则将不会实时发送给客户端
     */
    int MT12_OF_PROCESS_ADD$FRIEND$REQ_SERVER$TO$A_REJECT_RESULT = 12;
    /**
     * 新好友已成功被添加信息头（此场景是被请求用户同意了加好友的请求时，由服务端把双
     * 方的好友信息及时交给对方（如果双方有人在线的话））
     */
    int MT10_OF_PROCESS_ADD$FRIEND$REQ_FRIEND$INFO$SERVER$TO$CLIENT = 10;
    /**
     * 由服务端反馈给B处理（包括同意和拒绝两种情况下）加好友请求处理时的错误信
     * 息头(出错的可能是：B在提交同意A的加好友请求时出错了等)
     */
    int MT11_OF_PROCESS_ADD$FRIEND$REQ_RESPONSE$FOR$ERROR_SERVER$TO$B = 11;


    /**
     * 视频聊天进行中：结束本次音视频聊天
     */
    int MT14_OF_VIDEO$VOICE_END$CHATTING = 14;
    /**
     * 视频聊天进行中：切换到纯音频聊天模式
     */
    int MT15_OF_VIDEO$VOICE_SWITCH$TO$VOICE$ONLY = 15;
    /**
     * 视频聊天进行中：切换回音视频聊天模式
     */
    int MT16_OF_VIDEO$VOICE_SWITCH$TO$VOICE$AND$VIDEO = 16;

    /**
     * 视频聊天呼叫中：请求视频聊天(发起方A)
     */
    int MT17_OF_VIDEO$VOICE$REQUEST_REQUESTING$FROM$A = 17;
    /**
     * 视频聊天呼叫中：取消视频聊天请求(发起发A)
     */
    int MT18_OF_VIDEO$VOICE$REQUEST_ABRORT$FROM$A = 18;
    /**
     * 视频聊天呼叫中：同意视频聊天请求(接收方B)
     */
    int MT19_OF_VIDEO$VOICE$REQUEST_ACCEPT$TO$A = 19;
    /**
     * 视频聊天呼叫中：拒绝视频聊天请求(接收方B)
     */
    int MT20_OF_VIDEO$VOICE$REQUEST_REJECT$TO$A = 20;


    /**
     * 实时语音聊天呼叫中：请求实时语音聊天(发起方A)
     */
    int MT31_OF_REAL$TIME$VOICE$REQUEST_REQUESTING$FROM$A = 31;
    /**
     * 实时语音聊天呼叫中：取消实时语音聊天请求(发起发A)
     */
    int MT32_OF_REAL$TIME$VOICE$REQUEST_ABRORT$FROM$A = 32;
    /**
     * 实时语音聊天呼叫中：同意实时语音聊天请求(接收方B)
     */
    int MT33_OF_REAL$TIME$VOICE$REQUEST_ACCEPT$TO$A = 33;
    /**
     * 实时语音聊天呼叫中：拒绝实时语音聊天请求(接收方B)
     */
    int MT34_OF_REAL$TIME$VOICE$REQUEST_REJECT$TO$A = 34;

    /**
     * 实时语音聊天进行中：结束本次实时语音聊天
     */
    int MT35_OF_REAL$TIME$VOICE_END$CHATTING = 35;


    /**
     * 临时聊天消息：由发送人A发给服务端【步骤1/2】
     */
    int MT42_OF_TEMP$CHAT$MSG_A$TO$SERVER = 42;
    /**
     * 临时聊天消息：由服务端转发给接收人B的【步骤2/2】
     */
    int MT43_OF_TEMP$CHAT$MSG_SERVER$TO$B = 43;

    /**
     * 群聊/世界频道聊天消息：由发送人A发给服务端【步骤1/2】
     */
    int MT44_OF_GROUP$CHAT$MSG_A$TO$SERVER = 44;
    /**
     * 群聊/世界频道聊天消息：由服务端转发给所有在线接收人B的【步骤2/2】
     */
    int MT45_OF_GROUP$CHAT$MSG_SERVER$TO$B = 45;

    /**
     * 群聊系统指令：加群(建群或被邀请时)成功后通知被加群者（由Server发出，所有被加群者接收）
     */
    int MT46_OF_GROUP$SYSCMD_MYSELF$BE$INVITE_FROM$SERVER = 46;
    /**
     * 群聊系统指令：通用的系统信息给指定群员（由Server发出，指定群员接收）
     */
    int MT47_OF_GROUP$SYSCMD_COMMON$INFO_FROM$SERVER = 47;
    /**
     * 群聊系统指令：群已被解散（由Server发出，除解散者外的所有人接收）
     */
    int MT48_OF_GROUP$SYSCMD_DISMISSED_FROM$SERVER = 48;
    /**
     * 群聊系统指令："你"被踢出群聊（由Server发出，被踢者接收）
     */
    int MT49_OF_GROUP$SYSCMD_YOU$BE$KICKOUT_FROM$SERVER = 49;
    /**
     * 群聊系统指令："别人"主动退出或被群主踢出群聊（由Server发出，其它群员接收）
     */
    int MT50_OF_GROUP$SYSCMD_SOMEONEB$REMOVED_FROM$SERVER = 50;
    /**
     * 群聊系统指令：群名被修改的系统通知（由Server发出，所有除修改者外的群员接收）
     */
    int MT51_OF_GROUP$SYSCMD_GROUP$NAME$CHANGED_FROM$SERVER = 51;

//	/** 群聊系统指令：群主转让成功后，通知新群主（由Server发出，仅新群主接收此指令） */
//	int MT51_OF_GROUP$SYSCMD_YOU$ARE$NEW$OWNER_FROM$SERVER = 52;

    /**
     * 群聊系统指令:创建子房间系统通知（由Server发出，所有除修改者外的群员接收）
     */
    int MT53_OF_GROUP$SYSCMD_CHANNEL$CREATE_CHANNEL$SERVER = 53;

    /**
     * 上传gps
     */
    int MT54_OF_GPS_NOTIFICATION = 54;
    /**
     * 客户端发起语音
     */
    int MT55_OF_SOS_NOTIFICATION = 55;
    /**
     * 客户端发言完成
     */
    int MT56_OF_SOS_NOTIFICATION_SUCCESS = 56;
    /**
     * 客户端群全局广播
     */
    int MT57_OF_SOS_ALL_NOTIFICATION = 57;
    /**
     * 客户端视频推流
     */
    int MT58_VIDEO_NOTIFICATION = 58;
    /**
     * 客户端视频推流完成
     */
    int MT59_VIDEO_SUCCESS_NOTIFICATION = 59;
    /**
     * 订阅gps
     */
    int MT60_GPS_SUBSCRIBE = 60;
    /**
     * 取消订阅gps
     */
    int MT61_GPS_CANCEL_SUBSCRIBE = 61;
    /**
     * 查询视频推流
     */
    int MT62_QUERY_VIDEO_SUBSCRIBE = 62;
    /**
     * 全局广播完成
     */
    int MT63_OF_SOS_ALL_NOTIFICATION_SUCCESS = 63;

    /**
     * 停止上传GPS
     */
    int MT64_OF_GPS_STOP_NOTIFICATION = 64;

    /**
     * 设备推流
     */
    int MT65_DEV_VIDEO_NOTIFICATION = 65;

    /**
     * 设备推流结束
     */
    int MT66_DEV_VIDEO_SUCCESS_NOTIFICATION = 66;
    /**
     * 设备配置
     */
    int MT67_DEV_CONFIG_NOTICATION = 67;

    /**
     * 设备上线
     */
    int MT68_OF_DEV_ONLINE_NOTIVICATION = 68;
    /**
     * 设备下线
     */
    int MT69_OF_DEV_OFFLINE_NOTIVICATION = 69;

    /**
     * 频道新增/修改通知
     */
    int MT70_OF_CHANNEL_NOTIVICATION = 70;

    /**
     * ptt对讲文件消息
     */
    int MT71_OF_PTT_VOICE_NOTIVICATION = 71;

    /**
     * 一键到底
     */
    int ONE_KEY_SINK = 72;

    /**
     * 通知等待时间
     */
    long NOTIFY_WAIT_TIME = 500;

    // 刷新频道列表
    int REFRESH_CHANNEL_LIST = 73;

    //打电话
    int MT74_RTC_PHONE_CALL = 74;

    int MT78_REFRESH_SUSER = 78;

    int MT79_REFRESH_CHANNEL_LIST = 79;
    int MT80_REFRESH_STRUCTION_USER_TREE = 80;
    int MT81_SET_DEVICE_CONFIG = 81;
    int MT82_DEVICE_UPLOAD_NETWORK_ENV = 82;
    int MT83_DEVICE_OPEN_GPS = 83;
    int MT84_DEVICE_CLOSE_GPS = 84;
    int ACTION_NOTIFY_DEVICE_END_PUSH_STREAM = 85;
    int ACTION_RECORD_DEVICE_PLAY_STREAM = 86;

    int ACTION_DEVICE_START_PUSH_STREAM = 87;
    int ACTION_DEVICE_STOP_PUSH_STREAM = 88;

    int ACTION_LISTEN_OPEN_CHANNEL = 89;

    int ACTION_LISTEN_CLOSE_CHANNEL = 90;

    int ACTION_DELETE_GROUP = 93;

    int ACTION_OVER_SOS = 94;

    int ACTION_REFRESH_DEV_GROUP_NODE_CODE = 91;

    int ACTION_CONSOLE_CMD = 92;
    int ACTION_NOT_STAND_BY_REMOTE_PUSH = 95;
    int ACTION_UPLOAD_ANDROID_LIVE_SOURCE = 96;
    int ACTION_QUERY_ANDROID_LIVE_SOURCE = 97;
    int ACTION_CHANGE_ANDROID_LIVE_SOURCE = 98;
    int ACTION_DEVICE_INVESTIGATION = 99;
    int ACTION_DEVICE_HUMAN_FACE_BIND = 100;
    int ACTION_PUSH_HUMAN_FACE_IDENTIFY = 101;
    int ACTION_DEVICE_FILE_UPLOAD = 105;

    int ACTION_DEVICE_UPLOAD_FILE_LIST = 106;
    int ACTION_DEVICE_FILE_PROGRESS = 107;

    int ACTION_PUSH_DEVICE_FILE_PAGE_DATA = 108;

    /**
     * 缓存正在发言的用户
     */
    Map<String, String> SOS_GROUP_TYPE_MAP = new ConcurrentHashMap<>();
    /**
     * 缓存推流视频用户
     */
    Map<String, String> GROUP_VIDEO_MAP = new ConcurrentHashMap<>();
    /**
     * 缓存接收语音的用户
     */
    Map<String, AtomicInteger> SOS_NUMBER_MAP = new ConcurrentHashMap<>();
    /**
     * 缓存订阅GPS用户
     */
    Map<String, List<String>> SUBSCRIBE_GPS_MAP = new ConcurrentHashMap<>();

    /**
     * 缓存推流设备
     */
    Map<String, String> DEV_VIDEO_MAP = new ConcurrentHashMap<>();
}
